package com.knowledgegraph.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * 关系实体类
 */
@Data
@TableName(value = "kg_relation", autoResultMap = true)
public class Relation {

    /**
     * 关系ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 关系名称
     */
    private String name;

    /**
     * 关系类型
     */
    private String type;

    /**
     * 关系描述
     */
    private String description;

    /**
     * 源实体ID
     */
    private Long sourceEntityId;
    
    /**
     * 源实体（非数据库字段）
     */
    @TableField(exist = false)
    private Entity sourceEntity;

    /**
     * 目标实体ID
     */
    private Long targetEntityId;
    
    /**
     * 目标实体（非数据库字段）
     */
    @TableField(exist = false)
    private Entity targetEntity;

    /**
     * 所属图谱ID
     */
    private Long graphId;

    /**
     * Neo4j关系ID
     */
    private Long neo4jId;

    /**
     * 关系属性JSON
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> properties;

    /**
     * 权重
     */
    private Double weight;

    /**
     * 创建者ID
     */
    private Long creatorId;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 逻辑删除标志（0-未删除，1-已删除）
     */
    private Integer deleted;
}